#pragma once

#include <random>

class Normal
{
public:
    static std::vector<double> vector(int n, double mean, double stddev);
    template<typename T>
    static std::vector<std::vector<T>> matrix(int row, int col, double mean, double stddev){
        // 1. 初始化随机数引擎（使用硬件熵源）
        std::random_device rd;
        std::mt19937 gen(rd());

        // 2. 定义正态分布
        std::normal_distribution<T> dist(mean, stddev);

        // 3. 生成矩阵
        std::vector<std::vector<T>> matrix(row, std::vector<T>(col));
        for (auto& row_vec : matrix) {
            for (T& val : row_vec) {
                val = dist(gen);
            }
        }

        return matrix;
    }
};
